Описание
Копирует текущую запись из обновляемого объекта Recordset
в буфер копирования для последующего изменения.
наборЗаписей.Edit
Параметры
наборЗаписей
Представляет открытый обновляемый объект
Recordset, который содержит подлежащую изменению запись.
Замечания
После вызова метода Edit все изменения, внесенные в поля
текущей записи, помещаются в буфер копирования. После того как все необходимые
изменения будут внесены, следует вызвать метод Update для сохранения
изменений.
После вызова метода Edit текущая запись остается
текущей.
Если после изменения записи перейти к следующей записи без вызова
метода Update, то все внесенные изменения будут отменены без
предупреждения. Кроме того, все изменения записи будут потеряны без
предупреждения, если закрыть наборЗаписей или завершить процедуру, в которой
описан объект Recordset, а также родительский объект Database или
Connection.
Вызов метода Edit приводит к возникновению ошибки в
следующих случаях:
1. Отсутствует текущая запись.
2. Объект
Connection, Database или Recordset был открыт только для
чтения.
3. Ни одно из полей записи не является обновляемым.
4. Объект
Database или Recordset был открыт другим пользователем для
монопольного доступа (в рабочей области ядра Microsoft Jet).
5.
Страница, содержащая текущую запись, блокирована другим пользователем (в рабочей
области ядра Microsoft Jet).
Если при работе в сети в рабочей области
ядра Microsoft Jet для свойства LockEdits объекта Recordset
задано значение True (жесткая блокировка), запись блокируется с момента
вызова метода Edit до завершения обновления. При значении False
свойства LockEdits (нежесткая блокировка), запись блокируется и
сравнивается с исходным содержимым записи непосредственно перед обновлением
записи в базе данных. В ситуации, когда запись была изменена другим
пользователем после вызова метода Edit, вызов метода Update
приводит к ошибке выполнения, если метод OpenRecordset был вызван без
указания константы dbSeeChanges. По умолчанию, при подключении к ядру
Microsoft Jet базы данных ODBC и устанавливаемых драйверов
ISAM всегда используют нежесткую блокировку.
В рабочей области
ODBCDirect после изменения (и вызова метода Update для обновления)
ключевого поля записи пользователь не имеет возможности дальнейшего изменения
полей этой записи до закрытия объекта Recordset и последующей загрузки
записи с помощью запроса.
Для добавления, изменения или удаления записи
необходимо существование уникального индекса для этой записи в базовом источнике
данных. В противном случае возникнет ошибка "Разрешение отсутствует" при вызове
метода AddNew, Delete или Edit в рабочей области ядра
Microsoft Jet или ошибка "Недопустимый аргумент" при вызове метода
Update в рабочей области ODBCDirect.
Пример
Следующая программа использует метод Edit для замены текущих
данных, соответствующих указанному имени. Для выполнения этой процедуры
требуется процедура EditName.
Sub EditX() Dim dbsNorthwind As Database Dim rstEmployees As Recordset Dim strOldFirst As String Dim strOldLast As String Dim strFirstName As String Dim strLastName As String Set dbsNorthwind = OpenDatabase("Борей.mdb") Set rstEmployees = dbsNorthwind.OpenRecordset("Сотрудники", dbOpenDynaset) ' Сохраняет исходные данные. strOldFirst = rstEmployees!Имя strOldLast = rstEmployees!Фамилия ' Принимает новые данные для записи. strFirstName = Trim(InputBox( "Введите имя:")) strLastName = Trim(InputBox( "Введите фамилию:")) ' Продолжает выполнение, если данные введены в оба поля. If strFirstName <> "" and strLastName <> "" Then ' Обновляет запись новыми данными. EditName rstEmployees, strFirstName, strLastName With rstEmployees ' Отображает новые и старые данные. Debug.Print "Старые данные: " & strOldFirst & " " & strOldLast Debug.Print "Новые данные: " & !Имя & " " & !Фамилия ' Восстанавливает исходные данные, измененные ' только для демонстрации. .Edit !Имя = strOldFirst !Фамилия = strOldLast .Update End With Else Debug.Print "Необходимо ввести строковое значение для имени и фамилии!" End If rstEmployees.Close dbsNorthwind.Close End Sub Sub EditName(rstTemp As Recordset, strFirst As String, strLast As String) ' Вносит изменения в запись и устанавливает закладку, ' чтобы оставить запись текущей. With rstTemp .Edit !Имя = strFirst !Фамилия = strLast .Update .Bookmark = .LastModified End With End Sub